/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package co.edu.eam.supergiros.persistencia.dao.implementaciones;

import co.edu.eam.supergiros.persistencia.dao.definiciones.IDAOMoneda;
import co.edu.eam.supergiros.persistencia.entidades.Moneda;
import co.edu.eam.supergiros.persistencia.entidades.ValorMoneda;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author EAM
 */
public class DAOMoneda implements IDAOMoneda {

     private EntityManager em;

    public DAOMoneda(EntityManager em) {
        this.em = em;
    }

    @Override
    /**
     * metodo que permite listar todas las monedas
     * @return la lista de las monedas
     */
    public List<Moneda> listarMonedas() {
        Query q = em.createNamedQuery(Moneda.CONSULTA_LISTA_MONEDA);
        return q.getResultList();
    }

    @Override
    /**
     * metodo que permite listar las monedas por su codigo
     * @param codigoMoneda, codigo de la moneda a buscar
     * @return la lista de las monedas
     */
    public List<ValorMoneda> listarValoresMonedas(long codigoMoneda) {
       Query q = em.createNamedQuery(ValorMoneda.CONSULTA_LISTA_VALORMONEDA);
        return q.getResultList();
    }

/**
 * metodo que busca una moneda por pais
 * @param codigoPais, codigo del pais a buscar
 * @return una moneda
 */
    @Override
    public Moneda buscarMonedaPorPais(long codigoPais) {
         Query q = em.createNamedQuery(Moneda.PARAMETRO_LISTA_PAIS);
         q.setParameter(Moneda.PARAMETRO_LISTA_PAIS, codigoPais);
        List<Moneda> lista=q.getResultList();

        if(lista.isEmpty()==false){
            return lista.get(0);
        }
        return null;
    }

/**
 * metodo que busca una moneda por su codigio
 * @param codigoMoneda, codigo de la moneda a buscar
 * @return m, moneda
 */
    @Override
    public Moneda buscar(long codigoMoneda) {
        Moneda m = em.find(Moneda.class, codigoMoneda);

        if (m == null) {
            return m;
        } else {
            return m;
        }
    }


}


   